;:sys36864 ;.opt oo ;disk spion run 2/86 ;abgetippt 160486 setpar =$ffba setnam =$ffbd open =$ffc0 close =$ffc3 chkin =$ffc6 chkout =$ffc9 clrch =$ffcc input =$ffcf print =$ffd2 lnprt =$bdcd setcrsr =$fff0 tmp =4 keys =198 blank =$ab3f zeile =214 keybuf =631 status =$90 lf =$aad7 quotflag =$d4 rvsflag =$c7 ramtop =$37 taste =$c5 temp =$22 temp2 =$fa device =$f9 text =$33c ct =temp2+4 count =temp+3 cr =$d farb1 =$d020 farb2 =$d021 farb3 =646 clrscr =$e544 frmnum =$ad8a int =$b7f7 chrptr =$7a lo =20 rvson ="\x12" prompt ="]" stop =$3f spc =$3c return =1 ioflag =157 quote =34 pnt =$fc *= 30000 jmp goto message .byte "\x0e\x08Disk Spion 3.2" .byte " (c) by \x12NSS\x92 and \x12MB Soft" .byt cr,0 cmds .byte "@xvmrt?fe:w_!$dpncaAsh" .byt 0 dirch .byt "#" ertxt1 .byt cr .byte "\x91\x1d\x1d\x12?" .byt 0 ertxt2 .byt cr .byte "\x91\x1d\x1d\x12??" .byt 0 ptext .byte "b-p 8 0" .byt 0 rtext .byte "u1:8 0 00 00" .byt 0 memwrite .byte "m-w" .byt 119,0,2 fab1 .byt 0,1,14,9,6,11,14,-1 fab2 .byt 0,1,6,9,6,11,15 fab3 .byt 13,0,14,7,7,12,9 pc .word 0 latch .byt 0 endpnt .word 0 dez .byt 0 colnr .byt 0 rflag .byt 0 eflag .byt 0 track .byt 0 sector .byt 0 from .byt 0 to .byt 0 addr .word error,exit,void,memory,read,dts,show,fill .word execute,change,write,color,todez,tohex,disass .word put,number,changenr,hextoasc,asctohex .word goto,hunt mnm .byte "ldxldytxabeqbnebccjmpdeybrkrlacra???seinx" .byte "sedexseclcpybitaxdecmphabvcliscrortinclvbminy" .byte "rradcldaaxbvstaynoplaxbplphpjsrtsxrolsreoraslo" .byte "stxsbcstyandcpx" adr .byt 1,11,1,10,3,3,3,3,1,2,4,1,5,5,5,5,12,10,1,11 .byt 3,6,6,6,1,9,1,9,5,8,8,8,5,11,1,1,3,3,3,3,1,2,4,1 .byt 5,5,5,5,12,10,1,10,3,6,6,6,1,9,1,9,5,8,8,8,1,11,1 .byt 11,3,3,3,3,1,2,4,1,5,5,5,5,12,10,1,10,3,6,6,6 .byt 1,9,1,9,5,8,8,8,1,11,1,11,3,3,3,3,1,2,4,1 .byt 13,5,5,5,12,10,1,10,3,6,6,6,1,9,1,9,5,8,8,8 .byt 1,11,1,11,3,3,3,3,1,1,1,1,5,5,5,5,12,10,1 .byt 1,6,6,7,7,1,9,1,1,1,8,1,1,2,11,2,11,3,3 .byt 3,3,1,2,1,1,5,5,5,5,12,10,1,10,6,6,7,7,1 .byt 9,1,1,8,8,9,9,2,11,1,11,3,3,3,3,1,2,1 .byt 1,5,5,5,5,12,10,1,10,3,6,6,6,1,9,1,9,5 .byt 8,8,8,2,11,1,11,3,3,3,3,1,2,1,1,5,5,5,5,12 .byt 10,1,10,1,6,6,6,1,9,1,9,1,8,8,5 adrmod .word 0,no,direkt,zeropage,akku,absolut,zpx .word zpy,absx,absy,idridz,idzidr,relativ,indirekt txt .byt $18,$7e,$1e,$81,$66,$7e,$80,$81 .byt $6f,$7e,$80,$21,$66,$7e,$80,$81 .byt $6c,$7e,$1e,$81,$66,$7e,$80,$81 .byt $30,$7e,$66,$81,$66,$7e,$80,$81 .byt $72,$8d,$1e,$21,$35,$8d,$78,$1b .byt $6d,$8d,$78,$21,$35,$8d,$78,$1b .byt $51,$8d,$1e,$1b,$66,$8d,$78,$1b .byt $2e,$8d,$66,$1b,$66,$8d,$78,$1b .byt $4a,$7d,$1e,$7b,$66,$7d,$7e,$7b .byt $3e,$7d,$7a,$21,$12,$7d,$7a,$7b .byt $41,$7d,$1e,$7b,$66,$7d,$7a,$7b .byt $43,$7d,$66,$7b,$66,$7d,$7a,$7b .byt $74,$58,$21,$56,$66,$58,$48,$56 .byt $68,$58,$48,$21,$12,$58,$48,$56 .byt $60,$58,$1e,$56,$66,$58,$48,$56 .byt $24,$58,$66,$56,$66,$58,$48,$56 .byt $21,$62,$21,$5d,$8a,$62,$84,$5d .byt $15,$21,$06,$21,$8a,$62,$84,$5d .byt $0f,$62,$1e,$21,$8a,$62,$84,$5d .byt $8b,$62,$85,$21,$21,$62,$21,$21 .byt $03,$5b,$00,$69,$03,$5b,$00,$69 .byt $63,$5b,$37,$21,$03,$5b,$00,$69 .byt $88,$5b,$1e,$69,$03,$5b,$00,$69 .byt $4e,$5b,$75,$21,$03,$5b,$00,$69 .byt $32,$3c,$1e,$8f,$32,$3c,$3a,$8f .byt $53,$3c,$2b,$21,$32,$3c,$3a,$8f .byt $0c,$3c,$1e,$8f,$66,$3c,$3a,$8f .byt $5a,$3c,$66,$8f,$66,$3c,$3a,$8f .byt $90,$87,$21,$45,$90,$87,$4c,$45 .byt $26,$87,$66,$21,$90,$87,$4c,$45 .byt $09,$87,$1e,$45,$21,$87,$4c,$45 .byt $29,$87,$66,$45,$21,$87,$4c,$45 cmdlist .byt cr .byte "\x12\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4DISK\xa4SPY\xa4VERSION\xa43.2\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4\xa4" .byte "\xa4\xa4\xa4\xa4\xa4Written\xa4by\xa4M.\xa4Boeing,\xa4RUN\xa42/86\xa4\xa4\xa4\xa4\xa4" .byte "\xa4\xa4\xa4\xa4\xa4\xa4Improved\xa4by\xa4N.\xa4Heusler\xa4\xa44/86\xa4\xa4\xa4\xa4\xa4\xa4" .byte "\x92\x11 Commands :" .byt cr .byte "\x11@ errorchannel @$ dir" .byt cr .byte "@... send cmd s restart" .byt cr .byte "x exit ? help" .byt cr .byte "r read track w write track" .byt cr .byte "m show track : change track" .byt cr .byte "f fill v void" .byt cr .byte "d disasembly t last track" .byt cr .byte "a hex -> ascii A ascii -> hex" .byt cr .byte "! hex -> decimal $ decimal -> hex" .byt cr .byte "e execute block _ colour" .byt cr .byte "p put h hunt" .byt cr .byte "c change device# n change/show dev." .byt cr,0 goto jsr exit lda #8 sta device lda #64 sta ioflag ldx #6 jsr ue lda #message jsr strout lda #3 sta keys lda #"@" sta keybuf lda #cr sta keybuf+1 lda #"?" sta keybuf+2 g lda #15 ldx device tay jsr setpar lda #0 jsr setnam jsr open jmp mainloop b lda #8 ldx device tay jsr setpar lda #1 ldx #dirch jsr setnam jmp open show lda #cmdlist jsr strout jmp mainloop nline jsr lf lda #prompt jmp print kx lda #"," jsr print lda #"x" jmp print ky lda #"," jsr print lda #"y" .byt $2c kauf lda #"(" .byt $2c kzu lda #")" .byt $2c up lda #"\x91" .byt $2c dollar lda #"$" jmp print exit lda #15 jsr close lda #8 jmp close bltest lda text+1 and #" " cmp #" " rts chartest cmp #" " bcc punkt cmp #$80 bcc norm cmp #$a0 bcc punkt norm lda #1 sta rvsflag lda dez rts punkt lda #0 sta rvsflag lda #"." rts senduser lda #rtext strout sta tmp sty tmp+1 ldy #0 label lda (tmp),y beq label2 jsr print inc tmp bne label inc tmp+1 bne label label2 rts mainloop jsr nline ldx #0 next jsr input sta text,x inx cpx #$29 bcs cont cmp #cr bne next cont stx ct ldx #0 lda text cmp #prompt bne test ldy #1 loop0 lda text,y sta text-1,y iny cpy ct bne loop0 dec ct test lda cmds,x beq end lda text cmp cmds,x beq exec weiter inx jmp test exec txa asl tax lda addr,x sta temp lda addr+1,x sta temp+1 jmp (temp) end lda text cmp #cr beq noerror lda #ertxt1 errout jsr strout noerror jmp mainloop mistake lda #ertxt2 bne errout error jsr lf lda text+1 cmp #"$" beq catalog cmp #cr beq dstatus jmp sendcmd dstatus jsr clrch ldx #15 jsr chkin lda #rvson jsr print loop1 jsr input jsr print cmp #cr bne loop1 jsr clrch jmp mainloop catalog lda #1 ldx device ldy #0 jsr setpar lda ct sec sbc #2 ldx #text+1 jsr setnam jsr open ldx #1 jsr chkin lda #0 sta status ldy #3 loop2 sty temp jsr input sta temp+1 ldy status bne r2 jsr input ldy status bne r2 ldy temp dey bne loop2 pha lda taste cmp #stop bne c pla clc bcc r2 c jsr blank pla ldx temp+1 jsr lnprt jsr blank loop3 jsr input ldy status bne r2 tax beq newline jsr print bne loop3 newline jsr lf lda taste cmp #spc beq waitloop goloop ldy #2 bne loop2 waitloop lda #0 sta keys w1 lda taste cmp #return bne w1 beq goloop r2 jsr clrch lda #1 jsr close jmp mainloop sendcmd jsr clrch ldx #15 jsr chkout ldx #0 loop4 lda text+1,x cmp #cr beq r3 jsr print inx bne loop4 r3 jsr clrch jmp dstatus void lda rflag beq r9 lda #0 tax loop9 sta block,x inx bne loop9 r9 jmp mainloop memory lda rflag bmi tst jmp mainloop tst lda ct cmp #2 bne cont5 ldx #-1 stx to inx stx from jmp dm cont5 cmp #5 bne cont6 ldx #-1 stx to ldy #2 jsr hexdez sta from jmp dm cont6 ldy #2 jsr hexdez sta from ldy #5 jsr hexdez sta to dm ldx #0 stx count stx eflag ldx from sta temp2 lda to cmp from bcc r13 cont4 jsr nline lda #":" jsr print stx dez jsr dezhex jsr blank jsr blank txa pha jsr hexdump pla tax jsr ascdump lda taste cmp #stop beq r11 lda eflag beq cont4 r11 lda block beq r13 jsr nline lda #"r" jsr print jsr blank lda block sta dez jsr dezhex jsr blank lda block+1 sta dez jsr dezhex jsr up r13 jmp mainloop hexdez ldx #0 loop5 lda text,y cmp #"a" bcs letter3 sec sbc #"0" jmp hi2 letter3 sbc #"7" hi2 sta temp,x iny inx cpx #2 bcc loop5 lda temp+1 sta dez lda temp asl asl asl asl sta temp lda dez adc temp sta dez rts dezhex lda dez and #15 sta temp lda dez lsr lsr lsr lsr sta temp+1 lda temp cmp #10 bcs letter adc #"0" sta temp+2 jmp hi letter clc adc #"7" sta temp+2 hi lda temp+1 cmp #10 bcs letter2 adc #"0" sta temp+3 jmp display letter2 clc adc #"7" sta temp+3 display lda temp+3 jsr print lda temp+2 jmp print hexdump ldy #0 loop11 lda block,x sta dez jsr dezhex inc count jsr blank cpx to bne wt lda #-1 sta eflag wt inx iny cpy #8 bcc loop11 rts ascdump ldy #0 loop12 lda block,x sta dez jsr chartest jsr print lda #0 sta quotflag sta rvsflag inx iny cpy #8 bcc loop12 rts read jsr bltest beq cont2 r7 jmp mistake cont2 lda ct cmp #8 bne r7 ldy #2 jsr hexdez sta track sta text+172 ldy #5 jsr hexdez sta sector sta text+173 jsr tsr lda #"1" sta rtext+1 jsr b jsr clrch ldx #$f jsr chkout jsr senduser jsr clrch ldx #8 jsr chkin ldx #0 loop8 jsr input sta block,x inx bne loop8 jsr clrch lda #8 jsr close lda #-1 sta rflag jmp mainloop tsr ldy #172 jsr split lda text+175 sta rtext+7 lda text+176 sta rtext+8 ldy #173 jsr split lda text+175 sta rtext+10 lda text+176 sta rtext+11 rts split lda #0 sta text+174 sta text+175 sta text+176 lda text,y hundert cmp #100 bcc zehn sbc #100 inc text+174 bne hundert zehn lda text+174 sta text+177 jsr mal jsr mal lda text,y sec sbc text+177 ten cmp #10 bcc eins sbc #10 inc text+175 bne ten eins lda text+174 sta text+177 jsr mal jsr mal sta text+178 lda text+175 sta text+177 jsr mal lda text,y sec sbc text+177 sec sbc text+178 one cmp #1 bcc r6 sbc #1 inc text+176 bne one r6 ldy #2 loop6 lda text+174,y clc adc #"0" sta text+174,y dey bne loop6 rts mal lda text+177 asl asl clc adc text+177 asl sta text+177 rts dts lda rflag beq r8 jsr nline lda #"w" jsr print jsr blank lda track sta dez jsr dezhex lda sector sta dez jsr blank jsr dezhex jsr up r8 jmp mainloop fill lda rflag beq r10 jsr bltest beq cont3 jmp mistake cont3 ldy #2 jsr hexdez sta from ldy #5 jsr hexdez sta to ldy #8 jsr ascorhex lda dez ldx from loop10 sta block,x cpx to bcs r10 inx bne loop10 r10 jmp mainloop ascorhex lda text,y cmp #"A" beq asc jmp hexdez asc lda text+1,y sta dez iny iny rts execute lda rflag beq r29 lda block bne r29 lda ct cmp #2 bne getadr lda block+2 sta temp2 lda block+3 sta temp2+1 jmp ex getadr lda ct cmp #7 bne r28 ldy #2 jsr hexdez sta temp2+1 jsr hexdez sta temp2 ex lda block+1 sta count ldy #0 exloop lda block+4,y sta (temp2),y iny cpy count bcc exloop beq exloop jmp exit r28 jmp mistake r29 jmp mainloop change lda ct cmp #$26 beq cm jmp mistake cm ldy #1 jsr hexdez sta temp2 lda zeile sta temp2+1 iny cloop iny jsr ascorhex ldx temp2 sta block,x inc temp2 cpy #$1c bne cloop ldx temp2+1 ldy #$1e clc jsr setcrsr lda temp2 sec sbc #8 tax jsr ascdump jmp mainloop write lda rflag beq r14 lda ct cmp #2 beq bw jsr bltest beq cont7 mis jmp mistake cont7 ldx ct cpx #8 bne mis ldy #2 jsr hexdez sta text+172 ldy #5 jsr hexdez sta text+173 jsr tsr bw lda #"2" sta rtext+1 jsr b ldx #15 jsr chkout lda #ptext jsr strout jsr clrch ldx #8 jsr chkout ldx #0 wloop lda block,x jsr print inx bne wloop jsr clrch ldx #15 jsr chkout jsr senduser jsr clrch lda #8 jsr close r14 jmp mainloop color ldx colnr inx jsr ue jmp mainloop ue lda fab1,x bpl p ldx #0 beq ue p stx colnr sta farb1 lda fab2,x sta farb2 lda fab3,x sta farb3 jmp clrscr tohex lda ct cmp #9 bcs miss jsr bltest bne miss lda chrptr pha lda chrptr+1 pha lda #text+2 sta chrptr sty chrptr+1 jsr frmnum jsr int jsr nline lda #"!" jsr print jsr blank lda lo+1 sta dez jsr dezhex lda lo sta dez jsr dezhex pla sta chrptr+1 pla sta chrptr goup jsr up jmp mainloop todez lda ct cmp #7 bne miss jsr bltest bne miss jsr nline jsr dollar jsr blank ldy #2 jsr hexdez pha jsr hexdez tax pla jsr lnprt jmp goup miss jmp mistake r30 jmp mistake eq jmp ed disass lda rflag beq eq jsr bltest bne r30 lda ct cmp #13 bne r30 ldy #2 jsr hexdez sta pc+1 jsr hexdez sta pc ldy #7 jsr hexdez sta endpnt jsr nline ldy #10 jsr hexdez sta endpnt+1 d ldy endpnt sty dez jsr dezhex lda #"-" jsr print lda pc+1 sta dez jsr dezhex lda pc sta dez jsr dezhex jsr blank ldy endpnt lda block,y tay sta dez jsr dezhex lda adr,y sty latch asl tay lda adrmod,y sta pnt lda adrmod+1,y sta pnt+1 jmp (pnt) next2 lda taste cmp #stop beq ed jsr nline jmp d ed jmp mainloop no ldy #8 jsr bloop ldy #1 jmp pcplusy adp jsr blank jsr op1a jsr blank jsr op2a ldy #2 jsr bloop jmp blank bloop jsr blank dey bne bloop lda #":" jsr print jmp mnmpr mnmpr ldy latch lda txt,y tay lda mnm,y jsr print lda mnm+1,y jsr print lda mnm+2,y jmp print op1a ldy endpnt lda block+1,y sta dez jmp dezhex op2a ldy endpnt lda block+2,y sta dez jmp dezhex ad jsr dollar jsr op2a jmp op1a oneop1 jsr oneop jsr dollar jmp op1a pcplusy ldx endpnt cpx endpnt+1 bne pluslp beq ready pluslp inc pc bne co2 inc pc+1 co2 inc endpnt dey bne pcplusy jmp next2 ready jmp mainloop oneop jsr blank jsr op1a ldy #5 jsr bloop jmp blank direkt jsr oneop lda #"#" jsr print jsr op1 plus2 ldy #2 jmp pcplusy zeropage jsr oneop1 jmp plus2 akku ldy #8 jsr bloop jsr blank lda #"A" jsr print plus1 ldy #1 jmp pcplusy absolut jsr adp jsr ad plus3 ldy #3 jmp pcplusy zpx jsr oneop1 jsr kx jmp plus2 zpy jsr oneop1 jsr ky jmp plus2 absx jsr adp jsr ad jsr kx jmp plus3 absy jsr adp jsr ad jsr ky jmp plus3 idridz jsr oneop jsr kauf jsr op1 jsr kzu jsr ky jmp plus2 idzidr jsr oneop jsr kauf jsr op1 jsr kx jsr kzu jmp plus2 indirekt jsr adp jsr kauf jsr ad jsr kzu jmp plus3 relativ jsr oneop lda pc sta pnt lda pc+1 sta pnt+1 ldy endpnt iny lda block,y bmi back lda block,y clc adc #2 tay jsr pntplusy offout jsr dollar lda pnt+1 sta dez jsr dezhex lda pnt sta dez jsr dezhex jmp plus2 back ldy #1 jsr pntplusy lda #-1 ldy endpnt iny sec sbc block,y tay jsr pntminusy jmp offout pntplusy inc pnt bne co inc pnt+1 co dey bne pntplusy rts pntminusy lda pnt ldx pnt+1 miloop sec sbc #1 bcs nothi dex nothi dey bne miloop sta pnt stx pnt+1 rts op1 jsr dollar jmp op1a put lda rflag beq r15 jsr bltest beq putting jmp mistake putting ldy #2 jsr hexdez tax ldy #5 putloop lda text,y cmp #cr beq r15 sta block,x iny inx bne putloop r15 jmp mainloop number lda ct cmp #2 beq shownr cmp #5 bne r17 jsr bltest bne r17 ldy #2 jsr hexdez cmp #8 bcc r17 cmp #16 bcs r17 sta device bne r18 shownr lda device sta dez jsr dezhex jmp mainloop r18 jsr clrch lda #15 jsr close jmp g r20 pla r17 jmp mistake changenr lda ct cmp #5 bne r17 jsr bltest bne r17 ldy #2 jsr hexdez pha cmp #8 bcc r20 cmp #16 bcs r20 sta device jsr clrch ldx #15 jsr chkout ldy #0 mwloop lda memwrite,y jsr print iny cpy #6 bne mwloop pla pha ora #32 jsr print pla ora #64 jsr print jsr clrch jmp r18 hextoasc jsr bltest bne r25 jsr nline lda #"A" jsr print jsr blank lda #quote jsr print ldy #2 loop14 jsr hexdez jsr print lda text,y cmp #cr beq r24 iny cpy #38 bcc loop14 r24 lda #quote jsr print r26 jsr up jmp mainloop r25 jmp mistake asctohex jsr bltest bne r25 lda #quote sta text+40 cmp text+2 bne r25 jsr nline lda #"a" jsr print jsr blank ldy #3 loop13 lda text,y cmp #cr beq r26 cmp #quote beq r26 sta dez jsr dezhex jsr blank iny bne loop13 hunt jsr bltest bne r22 lda ct cmp #11 bne r22 lda rflag beq r21 ldy #2 jsr hexdez sta from ldy #5 jsr hexdez sta to ldy #8 jsr ascorhex sta temp2+2 jsr lf ldy #0 sty temp2 sty temp+1 ldy from hloop lda block,y cmp temp2+2 bne chunt tya sta dez jsr dezhex jsr blank inc temp2 bne chunt inc temp2+1 chunt lda taste cmp #stop beq r21 cpy to php iny plp bne hloop jsr nline lda temp2+1 sta dez jsr dezhex lda temp2 sta dez jsr dezhex r21 jmp mainloop r22 jmp mistake block .byt 0